c# 您所在的位置:网站首页 Pack Url路径正确Cannot locate resource image c#

c#

2024-07-05 17:49| 来源: 网络整理| 查看: 265

在我的应用程序中,我创建了大量的自定义控件,然后在不同的窗口中使用这些控件。我的项目结构如下所示:

控件(文件夹) 成员列表(类) 资源(文件夹) Windows(文件夹) Window1.xaml Window2.xaml 帮助窗口(文件夹) Window3.xaml

我正在创建存储在 Controls 文件夹中的类(控件)。如果我想在控件中使用图像,我会像这样访问它:

new Uri("../Resources/my_image.png", UriKind.Relative)

虽然有时我想在多个窗口中使用相同的控件,但有时这些窗口存储在不同的文件夹中。如果我使用存储在另一个文件夹中的说 Window3 中的控件,则不会显示图像。

如果我将 Uri 更改为:(在路径中添加另一个“返回”命令)

new Uri("../../Resources/my_image.png", UriKind.Relative)

图像在Window3中显示,但在Window1或Window2中不显示。

有没有办法创建相对于主要可执行文件而不是相对于显示控件的窗口的路径?

编辑: 我忘了提一个重要的部分。因为在启动这个应用程序时我只是在学习如何使用 WPF,所以我搞砸了一件事。我的资源文件夹不在包含主要可执行文件的文件夹中。

我的文件结构是这样的:

斌 调试 MyApplication.exe 资源

我尝试使用大家建议的路径:

new Uri("pack://application:,,,/../../my_image.png", UriKind.RelativeOrAbsolute)

但我得到了异常(exception):

Cannot locate resource 'my_image.png'.

我可以尝试重新定位 Resources 文件夹,但它会弄乱所有其他路径。有没有办法在“包”uri 的文件夹结构中“返回”?如果没有,重新定位文件夹以免所有路径困惑的最佳方法是什么?

最佳答案

使用“打包”uri...所以您将使用:

pack://application:,,,/Resources/my_image.png

像这样:

new Uri("pack://application:,,,/Resources/my_image.png");

从您的任何 Windows/控件引用您的“图像”。

如果您有其他“项目”/“程序集”...您希望能够引用该资源,请使用:

pack://application:,,,/AssemblyNameContainingResource;component/Resources/my_image.png

当您在 Resource 文件夹中添加图像时....确保您使用 Resource 作为 Build Action。

enter image description here

关于c# - WPF 使用相对路径从程序集中的任何位置访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43780994/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有